Alteryxでデータの正規化をする
こんにちは、小澤です。
今回は「データの正規化」というものをAlteryxでやってみたいと思います。
データの正規化って?
機械学習なんかをしてると、列ごとにデータの値が取りうるレンジが異なると困るような状況になることがあります。 学習の際の処理に時間がかかったり、学習結果にも影響を及ぼしたりといったことが起こり得るのです。。
この問題を回避するためにデータのレンジを揃えるということを行います。 これがデータの正規化となります。
例えば以下のデータをみてみましょう。 一見なんということはない普通の散布図のように見受けられます。
このデータの軸の幅をみてみると、横軸は-10から+10までの範囲で値が存在しています。 一方縦軸は0から1までの範囲でとなっています。
このような状態になっているデータが取りうる値の範囲を2つの軸でスケールを揃えてやりたいわけです。
正規化の方法
さて、データの正規化にはいくつか方法があります。 今回は主だったもの2つを紹介したいと思います。
最小0、最大1にする
もっとも基本的なものとしてデータの最小値を0、最大値を1にするという方法があります。 これは各データに対して以下の計算を行います。
[latex] \frac{x - x_{min}}{x_{max} - x_{min}} [/latex]
データの最小値、最大値を使って計算してやるだけです。 これを実現するワークフローは以下のようになります。
Input DataツールからSelectツールの流ればデータの読み込みと型変換なので処理内容とは関係ありません。
まずSummarizeツールで最小値、最大値を求めます。
求めた最小値、最大値をAppend Fieldツールで結合したのち、Formulaツールで上記の計算を行います。
([x1] - [Min_x1]) / ([Max_x1] - [Min_x1])
処理前後の結果をBrowseツールのProfileで確認すると、データの性質はそのままスケールが変更されていることが確認できます。
平均0、標準偏差1にする
もう1つのよく使われる方法としては、標準正規分布に変換する方法です。 こちらは、以下のように平均と標準偏差を使って計算します。
[latex] \frac{x-\mu}{\sigma} [/latex]
これを実現するワークフローの構成は先ほどと同じになります。 一部設定値のみが異なりますので、その部分だけみていきましょう。
Summarizeツールの設定は以下のようになります。
先ほどの最大値、最小値の代わりに平均と標準偏差を求めています。 そのあとのFormulaツールの計算も同様に式の内容を書き換えます。
([x1] - [Avg_x1]) / [StdDev_x1]
こちらもBrowseツールで確認するといい感じに変換されています。
複数列に対してこの処理を行う
無事特定の列のデータの正規化を行うことができました、がしかし! 正規化したい列は1列だけってことはほとんどないでしょう。 機械学習を行う際にはデータの列数は時に数万、数十万にのぼることだってありえますので1つ1つなんてとてもじゃないけどやってられませんw 複数列に対してまとめて処理したいですね... やってみましょう。
ワークフローは以下のようになります。
最初の2つは同じものとして、その次にRecord IDツールでデータ全体に対して一意なIDを振っています。 続いて、TransposeツールでこのRecord IDをキーにして縦持ちに変換します。
以下のような形式のデータが生成されます。
続いては、これまで同様にSummarizeツールで平均と標準偏差を求めます。 先ほどとの違いは、Group ByでNameを指定している部分です。 これによって元のデータでの列ごとの平均と標準偏差を求めています。
以下のような結果になります。
このデータとTransposeツールの結果をJoinツールで結合してやります。 結合の際のキーはNameとしています。
これで縦持ちに変換された状態のデータに対して列ごとの平均・標準偏差を付与することができたので、Formulaツールで先ほどと同様の計算式でデータを正規化してやります。
最後にCross Tabツールで横持ちの形式に戻してやりましょう。
以下のようなデータが生成されるので、あとはSelectツールでいらないRecord ID列を削除してやれば完成です。
おわりに
Alteryxでデータを正規化する方法を紹介しました。 この処理はマクロにしてツール化してしまってもいいかもしれないですね。
Alteryxの導入なら、クラスメソッドにおまかせください
日本初のAlteryxビジネスパートナーであるクラスメソッドが、Alteryxの導入から活用方法までサポートします。14日間の無料トライアルも実施中ですので、お気軽にご相談ください。